Generally, an arithmetic operation that uses an imaginary number as an operand is realized by the following expression (1).
                                          X            +            Yi                    ←                      X            +            Yi            +                                          (                                  A                  +                  Bi                                )                            ⋆                              (                                  C                  +                  Di                                )                                                    =                  X          +                      A            ⋆            C                    -                      B            ⋆            D                    +                                    (                              Y                +                                  A                  ⋆                  D                                +                                  B                  ⋆                  C                                            )                        ⁢            i                                              (        1        )            
Execution of this matrix multiplication-addition by the use of a single floating-point multiply-add arithmetic operator needs execution of four arithmetic operations of the following expressions (1-1) to (1-4). In other words, if a single floating-point multiply-add arithmetic operator accomplishes an imaginary-number matrix multiplication-addition, four instructions have to be issued to the arithmetic operator.X←X+A*C  (1-1)Y←Y+A*D  (1-2)X←X−B*D  (1-3)Y←Y+B*C  (1-4)
The Single Instruction stream Multiple Data stream (SIMD) scheme, in which a single instruction deals with a number of data streams, has been generally known for efficiency in execution of multiplication-addition by fewer instructions. An arithmetic operating unit adopting the SIMD scheme includes a register and two floating-point multiply-add arithmetic operators that perform the same arithmetic operation using operands (register values) stored in the register. The two floating-point multiply-add arithmetic operators are called an ordinary floating-point multiply-add arithmetic operator (ordinary arithmetic operator) and an extended floating-point multiply-add arithmetic operator (extended arithmetic operator).
Register values associated with specified register numbers on the first half region of the register are input into the ordinary operator and are to be used as operands for an arithmetic operation while register values associated with specified register numbers on the second half region of the register are input into the extended operator and are to be used as operands for an arithmetic operation. Here, a specified register number on the second half region of register is the sum of a specified register number of the first half region of the register and a predetermined offset. Assuming that the number of register numbers is 128, the offset is set to be 64.
With this configuration, a single instruction that assigns register numbers specifying register values to be output from the register to the ordinary arithmetic operator can also assign the register numbers specifying register values to be output from the register to the extended arithmetic operator. Namely, a single instruction can instruct two arithmetic operators to execute arithmetic operations. Therefore, an arithmetic operation which has needed four instructions can be realized by two instructions, so that throughput can be doubled.
[Patent document] Japanese Patent Application Publication Laid-Open (KOKAI) No. 2003-16051
However, an imaginary-number matrix multiplication-addition executed by the four arithmetic operations of above expressions (1-1) to (1-4) (i.e., four instructions) are not accomplished in an arithmetic operator adopting the SIMD scheme which is not modified in obedience to two instructions for the reasons of: the restriction on the register that the ordinary arithmetic operator uses the first half region of the register while the extended arithmetic operator uses the second half region of the register; and the restriction on an arithmetic operation that the ordinary arithmetic operator and the extended arithmetic operator carry out the same arithmetic operation.